package com.py.inbound.service;

import java.util.List;

import com.py.inbound.domain.*;
import org.apache.ibatis.annotations.Param;
import org.springframework.transaction.annotation.Transactional;

/**
 * 入库管理Service接口
 * 
 * @author py
 * @date 2024-11-21
 */
public interface IPyInboundService 
{

    /**
     * 入库排名
     */
    public List<PyInbound> selectPyInboundRanking();

    /**
     * 入库统计
     */
    public StatisticsDate selectPyInboundStatistics(DateBeginEnd dateBeginEnd);

    /**
     * 查询入库管理
     * 
     * @param inventoryId 入库管理主键
     * @return 入库管理
     */
    public PyInbound selectPyInboundByInventoryId(Long inventoryId);

    /**
     * 查询入库管理列表
     * 
     * @param pyInbound 入库管理
     * @return 入库管理集合
     */
    public List<PyInbound> selectPyInboundList(PyInbound pyInbound);

    /**
     * 新增入库管理
     * 
     * @param pyInbound 入库管理
     * @return 结果
     */
    public int insertPyInbound(PyInbound pyInbound);

    /**
     * 修改入库管理
     * 
     * @param pyInbound 入库管理
     * @return 结果
     */
    public int updatePyInbound(PyInbound pyInbound);

    /**
     * 批量删除入库管理
     * 
     * @param inventoryIds 需要删除的入库管理主键集合
     * @return 结果
     */
    public int deletePyInboundByInventoryIds(Integer[] inventoryIds);

    /**
     * 删除入库管理信息
     * 
     * @param inventoryId 入库管理主键
     * @return 结果
     */
    public int deletePyInboundByInventoryId(Long inventoryId);
    /**
     * 进货部门
     */
    List<SysDept> selectAllSysDept();

    List<SysDept> selectAllSysDeptByParentId(@Param("deptid") Long deptid);
    List<SysUser> selectAllSysUserByParentId(@Param("deptid") Long deptid);
    //供应商下拉
    List<PySuppliers> selectAllPySuppliers();
    List<BsWarehouse>selectAllBsWarehouse();
    //供应商选中自动获取联系人和电话
    PySuppliers selectSuppliersByid(@Param("supplierId") Long supplierId);
    //关联进货订单列表
    List<OdPurchaseOrder> selectAllOdPurchaseOrder(OdPurchaseOrder odPurchaseOrder);
    List<OdPurchaseDetails> selectAllOdPurchaseDetails(OdPurchaseDetails odPurchaseDetails);
    //根据库位编号商品编号查询库存
    List<WhInventory> selectWhInventoryByCode(WhInventory whInventory);
    List<BsWhLocation> selectAllBsWhLocation(Integer wid);
    int updateStatus(PyInbound pyInbound);
    List<OdInRejected> selectAllOdInRejected(OdInRejected odInRejected);//进货退货查询
    List<OdRejectedDetails>  selectOdRejectedDetails(OdRejectedDetails odRejectedDetails);
    @Transactional
    List<PyInbound> inPyInboundLS(PyInbound pyInbound);//入库流水

    PyInbound inTotal();
}
